package ar.edu.sccs.model.loader.dto;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class DataMethod extends Data implements Serializable {

	private static final long serialVersionUID = 1L;

	private String methodName;
	private Class methodReturn;
	private List<Class> methodExceptions = new ArrayList<Class>();
	private List<DataMethodParameter> methodParameters = new ArrayList<DataMethodParameter>();

	//Modficadores
	private int modifiers;

	private boolean isFinal;
	private boolean isNative;
	private boolean isStatic;
	private boolean isAbstract;
	private boolean isStrictfp;
	private boolean isSynchronized;

	// Modificadores de visibilidad
	private int visibility;

	public void addMethodParameter(DataMethodParameter methodParameter) {
		this.methodParameters.add(methodParameter);
	}

	public void addMethodException(Class methodException) {
		this.methodExceptions.add(methodException);
	}

	/**
	 * @return the methodName
	 */
	public String getMethodName() {
		return methodName;
	}

	/**
	 * @param methodName the methodName to set
	 */
	public void setMethodName(String methodName) {
		this.methodName = methodName;
	}

	/**
	 * @return the methodReturn
	 */
	public Class getMethodReturn() {
		return methodReturn;
	}

	/**
	 * @param methodReturn the methodReturn to set
	 */
	public void setMethodReturn(Class methodReturn) {
		this.methodReturn = methodReturn;
	}

	/**
	 * @return the methodExceptions
	 */
	public List<Class> getMethodExceptions() {
		return methodExceptions;
	}

	/**
	 * @param methodExceptions the methodExceptions to set
	 */
	public void setMethodExceptions(List<Class> methodExceptions) {
		this.methodExceptions = methodExceptions;
	}

	/**
	 * @return the methodParameters
	 */
	public List<DataMethodParameter> getMethodParameters() {
		return methodParameters;
	}

	/**
	 * @param methodParameters the methodParameters to set
	 */
	public void setMethodParameters(List<DataMethodParameter> methodParameters) {
		this.methodParameters = methodParameters;
	}

	/**
	 * @return the isFinal
	 */
	public boolean isFinal() {
		return isFinal;
	}

	/**
	 * @param isFinal the isFinal to set
	 */
	public void setFinal(boolean isFinal) {
		this.isFinal = isFinal;
	}

	/**
	 * @return the isNative
	 */
	public boolean isNative() {
		return isNative;
	}

	/**
	 * @param isNative the isNative to set
	 */
	public void setNative(boolean isNative) {
		this.isNative = isNative;
	}

	/**
	 * @return the isStatic
	 */
	public boolean isStatic() {
		return isStatic;
	}

	/**
	 * @param isStatic the isStatic to set
	 */
	public void setStatic(boolean isStatic) {
		this.isStatic = isStatic;
	}

	/**
	 * @return the isAbstract
	 */
	public boolean isAbstract() {
		return isAbstract;
	}

	/**
	 * @param isAbstract the isAbstract to set
	 */
	public void setAbstract(boolean isAbstract) {
		this.isAbstract = isAbstract;
	}

	/**
	 * @return the isStrictfp
	 */
	public boolean isStrictfp() {
		return isStrictfp;
	}

	/**
	 * @param isStrictfp the isStrictfp to set
	 */
	public void setStrictfp(boolean isStrictfp) {
		this.isStrictfp = isStrictfp;
	}

	/**
	 * @return the isSynchronized
	 */
	public boolean isSynchronized() {
		return isSynchronized;
	}

	/**
	 * @param isSynchronized the isSynchronized to set
	 */
	public void setSynchronized(boolean isSynchronized) {
		this.isSynchronized = isSynchronized;
	}

	/**
	 * @return the visibility
	 */
	public int getVisibility() {
		return visibility;
	}

	/**
	 * @param visibility the visibility to set
	 */
	public void setVisibility(int visibility) {
		this.visibility = visibility;
	}

	/**
	 * @return the modifiers
	 */
	public int getModifiers() {
		return modifiers;
	}

	/**
	 * @param modifiers the modifiers to set
	 */
	public void setModifiers(int modifiers) {
		this.modifiers = modifiers;
	}
}
